package com.cskaoyan._10final._03method;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/10 10:20
 **/
/*
final修饰方法:
    被final修饰的方法表示这个方法不能被重写

    语法:
    权限修饰符 final 方法的返回值类型 方法名(形参列表){方法体}

注意事项:
并不是随便拿一个方法都能用final修饰的，比如：

1. private方法，本来就无法重写，不需要多此一举。（可以修饰，但是会报警告）
2. static方法，本来就无法重写，不需要多此一举。（可以修饰，但是会报警告）
3. 构造方法，不能被继承，更不能重写，加final修饰会编译报错。

 */
public class Demo {
    public static void main(String[] args) {
        // 创建子类对象
        Son son = new Son();
        // 调用父类中被final修饰的方法
        // 子类不能重写父类中的final方法,但是可以继承使用
        son.normalMethod();
    }
}

class Father{
    // 成员方法
    public final void normalMethod() {

    }

    // private方法
    // private 和 final 冗余的
    //private final void m1() {
    //
    //}

    // static方法
    // 不要这样用 跟继承没关系 跟重写没关系
    //static final void m2() {
    //
    //}

    // Modifier 'final' not allowed here
    //public final Father() {
    //}
}
class Son extends Father{
    // 表示不能重写父类中被final修饰的方法
    // 'normalMethod()' cannot override 'normalMethod()' in 'com.cskaoyan._10final._03method.Father';
    // overridden method is final
    //@Override
    //public void normalMethod() {
    //    super.normalMethod();
    //}
}